load("@prysm//tools/go:def.bzl", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_test")
load("@io_bazel_rules_docker//go:image.bzl", "go_image")
load("@io_bazel_rules_docker//container:container.bzl", "container_bundle")
load("@io_bazel_rules_docker//contrib:push-all.bzl", "docker_push")

go_library(
    name = "go_default_library",
    srcs = [
        "allocations.go",
        "db.go",
        "keyChecker.go",
        "logger.go",
        "main.go",
        "server.go",
        "watchtower.go",
    ],
    importpath = "github.com/prysmaticlabs/prysm/tools/cluster-pk-manager/server",
    visibility = ["//visibility:private"],
    deps = [
        "//contracts/deposit-contract:go_default_library",
        "//proto/cluster:go_default_library",
        "//shared/bls:go_default_library",
        "//shared/bytesutil:go_default_library",
        "//shared/depositutil:go_default_library",
        "//shared/keystore:go_default_library",
        "//shared/maxprocs:go_default_library",
        "//shared/params:go_default_library",
        "//shared/prometheus:go_default_library",
        "@com_github_ethereum_go_ethereum//:go_default_library",
        "@com_github_ethereum_go_ethereum//accounts/abi/bind:go_default_library",
        "@com_github_ethereum_go_ethereum//common:go_default_library",
        "@com_github_ethereum_go_ethereum//core/types:go_default_library",
        "@com_github_ethereum_go_ethereum//crypto:go_default_library",
        "@com_github_ethereum_go_ethereum//ethclient:go_default_library",
        "@com_github_ethereum_go_ethereum//rpc:go_default_library",
        "@com_github_gogo_protobuf//proto:go_default_library",
        "@com_github_pkg_errors//:go_default_library",
        "@com_github_prometheus_client_golang//prometheus:go_default_library",
        "@com_github_prometheus_client_golang//prometheus/promauto:go_default_library",
        "@com_github_prysmaticlabs_ethereumapis//eth/v1alpha1:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
        "@io_etcd_go_bbolt//:go_default_library",
        "@io_k8s_api//core/v1:go_default_library",
        "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library",
        "@io_k8s_client_go//kubernetes:go_default_library",
        "@io_k8s_client_go//rest:go_default_library",
        "@io_opencensus_go//plugin/ocgrpc:go_default_library",
        "@org_golang_google_grpc//:go_default_library",
    ],
)

go_binary(
    name = "server",
    embed = [":go_default_library"],
    visibility = ["//visibility:public"],
)

go_test(
    name = "go_default_test",
    size = "small",
    srcs = ["server_test.go"],
    embed = [":go_default_library"],
    deps = ["//proto/cluster:go_default_library"],
)

go_image(
    name = "image",
    base = "//tools:cc_image",
    binary = ":server",
    tags = ["manual"],
    visibility = ["//visibility:private"],
)

container_bundle(
    name = "image_bundle",
    images = {
        "gcr.io/prysmaticlabs/prysm/cluster-pk-manager/server:latest": ":image",
        "gcr.io/prysmaticlabs/prysm/cluster-pk-manager/server:{DOCKER_TAG}": ":image",
    },
    tags = ["manual"],
)

docker_push(
    name = "push_images",
    bundle = ":image_bundle",
    tags = ["manual"],
)
